GdkDeviceManagerCore: protect against xevent->xany.window not being a GdkWindow.
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 4 Jun 2010 14:17:41 +0000 (16:17 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Tue, 15 Jun 2010 19:06:10 +0000 (21:06 +0200)
Conceivably this GdkEventTranslator may still be asked for events such as
NoExpose or GraphicsExpose for pixmaps. It is not meant to translate such events,
but should at least behave with them.

gdk/x11/gdkdevicemanager-core.c

index 0e7b8c33d263450ced82421fe7dc754a59afc73e..7d2e9e44b39060f0bb0ea37b88d72968191f5eaf 100644 (file)
@@ -425,11 +425,11 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator,
   window = get_event_window (translator, xevent);
   window_private = (GdkWindowObject *) window;
 
-  if (window && GDK_WINDOW_DESTROYED (window))
-    return FALSE;
-
   if (window)
     {
+      if (GDK_WINDOW_DESTROYED (window) || !GDK_IS_WINDOW (window))
+        return FALSE;
+
       toplevel = _gdk_x11_window_get_toplevel (window);
       window_impl = GDK_WINDOW_IMPL_X11 (window_private->impl);
       g_object_ref (window);